/*
 * Molecule.h
 *
 *  Created on: Feb 28, 2011
 *      Author: wjfortin
 */
#ifndef MOLECULE_H_
#define MOLECULE_H_

class Molecule;

#include "../data/Quantity.h"
#include "../data/Concentration.h"
#include "../data/Interaction.h"
#include <lemon/list_graph.h>

#include <vector>

using namespace std;


class Molecule {
public:
	Molecule();
	virtual ~Molecule();

	/**\brief Get the current concentration of this molecule in the cell.
	 *
	 * \return the current concentration.
	 */
	Concentration* getConcentration();

	Quantity* getInitialConcentration();

	/**\brief Get the unique identifier for this Molecule
	 *
	 */
	int getMoleculeID();

	double* rkData;

        string name;


	bool calculate;
	int nodeID;

	void setCalculate(bool);

	Concentration* concentration;
	Quantity* initialConcentration;
	static int moleculeCounter;
	int moleculeID;

};

#endif /* MOLECULE_H_ */
